import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
dayjs.extend(relativeTime);

const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss';
const DATE_FORMAT = 'YYYY-MM-DD';

/**
 * @desc  格式化时间
 * @param {(Object|string|number)} time
 * @param {string} format
 * @returns {string | null}
 */
export function formatDateTime(time = undefined, format = DATE_TIME_FORMAT) {
	if (time) {
		return dayjs(time).format(format);
	} else {
		return time;
	}
}

export function formatDate(date = undefined, format = DATE_FORMAT) {
	return formatDateTime(date, format);
}

/**
 * @desc 格式化持续时间
 * @param {string|number} ms - 毫秒数
 * @returns {string} 返回格式化后的持续时间
 */
export function formatDuring(ms) {
	// 如果输入的是字符串，将其转换为整数
	if (typeof ms === 'string') {
		ms = parseInt(ms);
	}
	// 计算天数
	const days = Math.floor(ms / (1000 * 60 * 60 * 24));
	// 计算小时数
	const hours = Math.floor((ms % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
	// 计算分钟数
	const minutes = Math.floor((ms % (1000 * 60 * 60)) / (1000 * 60));
	// 计算秒数
	const seconds = Math.floor((ms % (1000 * 60)) / 1000);
	// 返回格式化后的字符串
	return `${days} 天 ${hours} 小时 ${minutes} 分钟 ${seconds} 秒`;
}

// 定义过去7天的日期范围，从7天前到昨天
export const LAST_7_DAYS = [dayjs().subtract(7, 'day').format(DATE_FORMAT), dayjs().subtract(1, 'day').format(DATE_FORMAT)];

// 定义过去30天的日期范围，从30天前到昨天
export const LAST_30_DAYS = [dayjs().subtract(30, 'day').format(DATE_FORMAT), dayjs().subtract(1, 'day').format(DATE_FORMAT)];

export const dateUtil = dayjs;
